Software code profiling tools may be used to assemble information about executing code, and therefore allow for the identification of critical paths, enabling the improvement of the overall performance of software under development. For example, a sampling profiler may capture a snapshot of a currently executing instruction when taking a sample of executing code at predefined time intervals. Such an approach may result in low overhead and may be used to assemble information about executing modules and/or functions in the code.